1. Field of the Invention
The present invention relates to systems and methods remotely updating software, and in particular to a system and method for automatically updating software and providing a flexible means for the installation of the downloaded software.
2. Description of the Related Art
Increasingly, the functionality of many products is implemented via processors executing software instructions stored in the product's memory. It is desirable to allow the software in these devices to be remotely updated, thus allowing functional upgrades, bug fixes, and the like.
One product which particularly benefits from the ability to upgrade software are set top boxes (STBs) or integrated receiver decoders (IRDs) used in cable or satellite television reception. The ability to download replacement software or software updates allows the media provider to fix bugs and security holes, provide additional functionality, and to insert a measure of uncertainty in the software functionality to discourage potential pirating of the broadcasted signal. Such devices typically utilize boot strap loaders (BSLs), which include software that are manifested in burn-once programmable read only memories (PROMs) or OTP (one time programmable) flash memories that are not programmable.
Traditional BSLs only receive new software images when the software that is being replaced successfully recognizes and processes ‘announcements’ that then trigger the BSL processing. For example if the software is functioning properly, after announcements are recognized and processed, the code being replaced sets flags in a non-volatile memory (NVRAM) of the set-top box (for example, the EEPROM of the set-top box). These flags alert the BSL that newer software is to be loaded. However, if the main software was not sufficiently functional, buggy or deficient, announcements cannot be recognized and processed, and new software cannot be downloaded. Furthermore, if the software that is being replaced is hacked, or otherwise compromised, the announcements may, by compromised design, not be processed and thereby preventing the updated software from being installed. What is needed is a system and method for automatically recognizing and processing of such announcements, thus assuring the ability to download updated software when determined necessary.
Another limitation of traditional BSLs is that they can only receive new code images and program the flash memory in the set top box with the updated image. Such traditional BSLs do not permit the downloading of both a software image and an executable code that is used to install the software image. Further, it is possible that the code to be downloaded is too large to be completely downloaded into the flash memory.
What is needed is a system and method that permits both the downloading of the software image and executable code to install that image, and permits the software download to be configured as needed to the STB, as well as being partitioned among memory available in the STB. The present invention satisfies that need.